(1) Field of the Invention
The present invention relates to the reading and writing of data in a processing system. More particularly it concerns the accessibility of the data to both the read and write portions of the system and the providing of update notification information to the read portions of the system whenever the data is being updated by the write portion of the system.
(2) Description of the Prior Art
In prior art systems, submarine combat system processes synchronize their access to shared resources by invoking synchronization primitives. These primitives are often termed "P" and "V", or "Signal" and "Wait", or "Lock" and "Unlock."When P and V, and Signal and Wait primitives are used, they are implemented as operating system (computer systems master program) services that require the process to surrender the computer system to the operating system. The process does a P/Wait when it needs the resource and a V/Signal when it wants to relinquish the resource. Each time a process invokes either a P or a V, it will call the operating system at least once per invocation. This switching to and from the operating system causes P and V primitives to introduce substantial overhead. P invocations indiscriminately cause writer(s) and reader(s) to wait serially for the resource. The P primitive may also affect the behavior of a priority based real-time system. P invocations have a tendency of creating a priority inversion when separate priority queues are not maintained for waiting processes. The absence of priority queues treats all processes as equal activities.
P and V primitives are often based on Lock and Unlock operators. Lock and Unlock operators are often directly based on some computer hardware mechanism. In practice, a successful lock allows a process to access the resource. On the other hand an unsuccessful lock requires the process to re-invoke the lock operator. Many computer systems make Lock and Unlock operators directly available to processes, i.e. they don't require P and V calls, and operating system intervention. Processing of unsuccessful lock(s) is accomplished by having the process either re-invoke the lock until success, or by having it block and continue at some later time, or by having it perform a default action. The re-invoking of the lock is often called a spin-lock and involves busy waiting and hence wastes precious computer system processor cycles. The blocking process as a strategy usually creates the same effect as the P operation, i.e., it serializes access. Unlike the P primitive, the lock operator doesn't have to result in suspended processing, but often default actions are not available when data must be processed.
Submarine combat systems' processing can conceptually be characterized as a processing pipeline with the flow being occasionally broken by human operator actions. Two generic processing structures in submarine combat systems are manifest when this conceptual model is applied. The progression from data to information usually has many processes feeding many other processes as multiple processing stages. The data bases shared to pipe data from one stage to another stage usually have one writer to each data base, or some set of records in it, and several readers accessing the data bases. This processing structure represents the first category, and the focus of the invention. The second category is the other processing structure where the computer system of a submarine combat system operates on data for, presents information to, and assists the actions of its human operators. Many of these actions often result in a break in the combat system processing pipeline. Often access to data bases is necessary, processes acting on the operators behalf may require sole access to either select data bases or sets of data base records. This often requires synchronization with processes in some stage of the processing pipeline. This latter processing scenario requires the P/V and Lock/Unlock solutions.